      Requests
--------------

First, a little background:
Lets take for example this line of text:
<img src="{='Image filename', urlFile[Images|*.gif;*.jpg;*.png]=}" align={='Image alignment', -align=}>

Now, lets follow the tag parser (lets call him John Doe):
First, John will insert the text until he meets '{=' (a smily): <img src="
Then, Mr. Doe will meet a smily ('{=') and analyze it:
John will take the description and put it in page number 1 in the Input Wizard: Image filename
Now, John will see 'urlFile[....]'. Now page #1 in the Wizard is waiting for the user to enter a filename.
Now, John meets a closing smily ('=}'). This means page #1 is complete.
John will now insert the text until the next smily:  " align=
He will take the description and put it in page #2: Image alignment
Now John meets a minus (a very bad guy...). This minus (-) tells John that if the user does not select an alignment, he should kick off the text around the request. That is: align=
Thats it. Now John meets the second smily finishes page #2, and inserts '>'.
Now John realises he is done parsing the tag. So he shows the user the Input Wizard (with the 2 pages), and waits for the user to click the Finish button.

Now, lets say the user (lets call him..... Mep) entered 'image1.gif' in the first page, and did not select anything in page 2.
Mep tells John that he is done with the Wizard (of Oz.... ;-), and John inserts 'image1.gif' and deletes the 'align=' (because of this bad minus guy).
So... the final tag will be:
<img src="image1.gif">

Now that you met John and Mep, you can start writing requests:

-Requests are enclosed with (little smilies) '{=' and '=}'.
'{=.......=}'

-Every request must include a comma (,) inside it.

-A request syntax:
{= 'Description', request_type[ request_parameters ] =}

-The 'Description' part is a simple text that appears in the Input Wizard.

-The request_type is the type of the input:
file   : Asks the user to enter a filename (with a Browse button).
 Parameters: Filter (what files to show in the Open Dialog).
 Example   : {= 'Enter a filename', file[HTML Files|*.html;*.htm|All Files|*.*] =}

string : Asks the user to enter a string.
 Parameters: none
 Example   : {= 'Enter a string', string=}

number : Asks the user to enter a number.
 Parameters: none
 Example   : {='Enter a number', number=}

percent: Asks the user to enter a percent value.
 Parameters: none
 Example   : {='Enter a percent value', percent=}

url    : Asks the user to enter a URL (with URL Wizard button).
 Parameters: none
 Example   : {='Enter a URL', url=}

urlfile: Asks the user to enter a URL (with URL Wizard button) or a filename (with a Browse button).
 Parameters: Filter (what files to show in the Open Dialog).
 Example   : {='Enter a URL or select a filename', urlFile[BMPs|*.bmp|GIFs|*.gif|All|*.*]  =}

color  : Asks the user to select a color.
 Parameters: none
 Example   : {= 'Select a color', color=}

attlist: Asks the user to select an item from the list of tag attributes. 
 Parameters: Tag start, Attribute start, Stop characters
 Example   : {= 'Select a form name from the list', attList[<form ;name=";">] =}
 Notes     : This will search the document for '<form '. When an occurence is found, it will search within the line (where it found it) for 'name="'. Then, the program will copy all the text from there (after the 'name="') until it meets one of the characters in this string: '">'.

align  : Asks the user to select an image alignment.
 Parameters: none
 Example   : {= '', align=}

image  : Asks the user to pick an image filename (includes a preview and auto Width&Height)
 Parameters: none
 Example   : {='', image=}
 Notes     : The text that will be inserted will be:
             'the image filename' WIDTH=imageWidth HEIGHT=imageHeight

list   : Asks the user to select an item from the list.
 Parameters: The items, the text to be inserted.
 Example   : {= '', list[ 'Item1'='Text1', 'item2'='text2', 'item3'='text3' ] =}
 Notes     : The items in the list will be: 'Item1', 'item2' and 'item3'
             If the user selects 'item1' the text that will be inserted will be 'text1'. If user selects 'item2', the text will be 'text2', and so on.

text   : Asks for a multiline string.
 Parameters: none
 Example   : {= 'Please write down your life story...', text =}

run    : Runs a program/file.
 Parameters: The file name.
 Example   : {= 'Any text here is ignored', run[c:\windows\calc.exe] =}
             will run the calc.exe program (if found)
             {= '', run[d:\readme.txt] =}
             will open the readme.txt file on d:\
             {= '', run[c:\file1.doc] =}
             will probably open MS-Word (if the doc extention is assigned to MS-Word) with the file file1.doc on c:\

date   : Asks user for a date, enabling user to choose from a calander.
 Parameters: none
 Example   : {= 'enter your birth date', date=}

msg   : Displays a message dialog with OK and Cancel buttons. Cancel cancels the wizard.
 Parameters: The message.
 Example   : {= '', msg[To cancel the wizard, click on the Cancel button]=}

menuCommand: Runs a menu command as if it was manually inserted to the tag.
 Parameters: menu item to execute
 Example   : {='', menuCommand[image|image]=} 
 Notes     : This will add the pages of Image|Image to the wizard.
             Usefull for making shorter tags and re-using tags.

goto   : Moves cursor to a specified position.
 Parameters: position, like this: 'text_to_find',deltaX,deltaY
 Example   : {='', goto['<head>',-1,1]=}
 Notes     : This will move the cursor to 1 char before (left) and 1 line after (down) the position of '<head>' in the text.
             Not case sensitive.
             Usefull for putting text at specified position (like Javascript functions in the <HEAD> part) w/o asking the user to move the cursor manually.
             For absolute positioning, use the parameters like this (don't define text_to_find): ['',X,Y]

-The request_parameters is a part that comes ONLY if the request_type has parameters. If it doesnt, just ommit the '[..]' part.